
package com.ktgj.common.spring.entity.iata.iata_orderviewrs;

import com.alibaba.fastjson.annotation.JSONField;

import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;


/**
 * <p>OrderType complex type的 Java 类。
 * 
 * <p>以下模式片段指定包含在此类中的预期内容。
 * 
 * <pre>
 * &lt;complexType name="OrderType"&gt;
 *   &lt;complexContent&gt;
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
 *       &lt;sequence&gt;
 *         &lt;element name="BilateralTimeLimit" type="{http://www.iata.org/IATA/2015/00/2018.2/IATA_OrderViewRS}BilateralTimeLimitType" maxOccurs="unbounded" minOccurs="0"/&gt;
 *         &lt;element name="BookingRef" type="{http://www.iata.org/IATA/2015/00/2018.2/IATA_OrderViewRS}BookingRefType" maxOccurs="unbounded" minOccurs="0"/&gt;
 *         &lt;element name="DepositTimeLimitDateTime" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" minOccurs="0"/&gt;
 *         &lt;element name="NamingTimeLimitDateTime" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" minOccurs="0"/&gt;
 *         &lt;element name="OrderID" type="{http://www.w3.org/2001/XMLSchema}string"/&gt;
 *         &lt;element name="OrderItem" type="{http://www.iata.org/IATA/2015/00/2018.2/IATA_OrderViewRS}OrderItemType" maxOccurs="unbounded"/&gt;
 *         &lt;element name="OrderKeys" type="{http://www.iata.org/IATA/2015/00/2018.2/IATA_OrderViewRS}Order1Type" maxOccurs="unbounded" minOccurs="0"/&gt;
 *         &lt;element name="OriginalOrder" type="{http://www.iata.org/IATA/2015/00/2018.2/IATA_OrderViewRS}OriginalOrderType" minOccurs="0"/&gt;
 *         &lt;element name="OwnerCode" type="{http://www.w3.org/2001/XMLSchema}string"/&gt;
 *         &lt;element name="OwnerTypeCode" type="{http://www.iata.org/IATA/2015/00/2018.2/IATA_OrderViewRS}OwnerTypeCodeContentType" minOccurs="0"/&gt;
 *         &lt;element name="PaxGroup" type="{http://www.iata.org/IATA/2015/00/2018.2/IATA_OrderViewRS}PaxGroupType" minOccurs="0"/&gt;
 *         &lt;element name="PaymentTimeLimitDateTime" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" minOccurs="0"/&gt;
 *         &lt;element name="StatusCode" type="{http://www.iata.org/IATA/2015/00/2018.2/IATA_OrderViewRS}OrderStatusCodeContentType" minOccurs="0"/&gt;
 *         &lt;element name="TotalPrice" type="{http://www.iata.org/IATA/2015/00/2018.2/IATA_OrderViewRS}PriceType" minOccurs="0"/&gt;
 *         &lt;element name="WebAddressURI" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/&gt;
 *         &lt;element name="Flag" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/&gt;
 *       &lt;/sequence&gt;
 *     &lt;/restriction&gt;
 *   &lt;/complexContent&gt;
 * &lt;/complexType&gt;
 * </pre>
 * 
 * 
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "OrderType", propOrder = {
    "bilateralTimeLimit",
    "bookingRef",
    "depositTimeLimitDateTime",
    "namingTimeLimitDateTime",
    "orderID",
    "orderItem",
    "orderKeys",
    "originalOrder",
    "ownerCode",
    "ownerTypeCode",
    "paxGroup",
    "paymentTimeLimitDateTime",
    "statusCode",
    "totalPrice",
    "webAddressURI",
    "flag"
})
public class OrderType {

    @XmlElement(name = "BilateralTimeLimit")
    protected List<BilateralTimeLimitType> bilateralTimeLimit;
    @XmlElement(name = "BookingRef")
    protected List<BookingRefType> bookingRef;
    @XmlElement(name = "DepositTimeLimitDateTime")
    protected Object depositTimeLimitDateTime;
    @XmlElement(name = "NamingTimeLimitDateTime")
    protected Object namingTimeLimitDateTime;
    //@XmlElement(name = "OrderID", required = true)
    @JSONField(name = "orderID")
    protected String orderID;
    @XmlElement(name = "OrderItem", required = true)
    protected List<OrderItemType> orderItem;
    @XmlElement(name = "OrderKeys")
    protected List<Order1Type> orderKeys;
    @XmlElement(name = "OriginalOrder")
    protected OriginalOrderType originalOrder;
    @XmlElement(name = "OwnerCode", required = true)
    protected String ownerCode;
    @XmlElement(name = "OwnerTypeCode")
    @XmlSchemaType(name = "string")
    protected OwnerTypeCodeContentType ownerTypeCode;
    @XmlElement(name = "PaxGroup")
    protected PaxGroupType paxGroup;
    @XmlElement(name = "PaymentTimeLimitDateTime")
    protected Object paymentTimeLimitDateTime;
    @XmlElement(name = "StatusCode")
    @XmlSchemaType(name = "string")
    protected OrderStatusCodeContentType statusCode;
    //@XmlElement(name = "TotalPrice")
    @JSONField(name = "totalPrice")
    protected PriceType totalPrice;
    @XmlElement(name = "WebAddressURI")
    protected String webAddressURI;
    @XmlElement(name = "Flag")
    protected String flag;

    /**
     * Gets the value of the bilateralTimeLimit property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the bilateralTimeLimit property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getBilateralTimeLimit().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link BilateralTimeLimitType }
     * 
     * 
     */
    public List<BilateralTimeLimitType> getBilateralTimeLimit() {
        if (bilateralTimeLimit == null) {
            bilateralTimeLimit = new ArrayList<BilateralTimeLimitType>();
        }
        return this.bilateralTimeLimit;
    }

    /**
     * Gets the value of the bookingRef property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the bookingRef property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getBookingRef().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link BookingRefType }
     * 
     * 
     */
    public List<BookingRefType> getBookingRef() {
        if (bookingRef == null) {
            bookingRef = new ArrayList<BookingRefType>();
        }
        return this.bookingRef;
    }

    /**
     * 获取depositTimeLimitDateTime属性的值。
     * 
     * @return
     *     possible object is
     *     {@link Object }
     *     
     */
    public Object getDepositTimeLimitDateTime() {
        return depositTimeLimitDateTime;
    }

    /**
     * 设置depositTimeLimitDateTime属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link Object }
     *     
     */
    public void setDepositTimeLimitDateTime(Object value) {
        this.depositTimeLimitDateTime = value;
    }

    /**
     * 获取namingTimeLimitDateTime属性的值。
     * 
     * @return
     *     possible object is
     *     {@link Object }
     *     
     */
    public Object getNamingTimeLimitDateTime() {
        return namingTimeLimitDateTime;
    }

    /**
     * 设置namingTimeLimitDateTime属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link Object }
     *     
     */
    public void setNamingTimeLimitDateTime(Object value) {
        this.namingTimeLimitDateTime = value;
    }

    /**
     * 获取orderID属性的值。
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getOrderID() {
        return orderID;
    }

    /**
     * 设置orderID属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setOrderID(String value) {
        this.orderID = value;
    }

    /**
     * Gets the value of the orderItem property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the orderItem property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getOrderItem().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link OrderItemType }
     * 
     * 
     */
    public List<OrderItemType> getOrderItem() {
        if (orderItem == null) {
            orderItem = new ArrayList<OrderItemType>();
        }
        return this.orderItem;
    }

    /**
     * Gets the value of the orderKeys property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the orderKeys property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getOrderKeys().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link Order1Type }
     * 
     * 
     */
    public List<Order1Type> getOrderKeys() {
        if (orderKeys == null) {
            orderKeys = new ArrayList<Order1Type>();
        }
        return this.orderKeys;
    }

    /**
     * 获取originalOrder属性的值。
     * 
     * @return
     *     possible object is
     *     {@link OriginalOrderType }
     *     
     */
    public OriginalOrderType getOriginalOrder() {
        return originalOrder;
    }

    /**
     * 设置originalOrder属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link OriginalOrderType }
     *     
     */
    public void setOriginalOrder(OriginalOrderType value) {
        this.originalOrder = value;
    }

    /**
     * 获取ownerCode属性的值。
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getOwnerCode() {
        return ownerCode;
    }

    /**
     * 设置ownerCode属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setOwnerCode(String value) {
        this.ownerCode = value;
    }

    /**
     * 获取ownerTypeCode属性的值。
     * 
     * @return
     *     possible object is
     *     {@link OwnerTypeCodeContentType }
     *     
     */
    public OwnerTypeCodeContentType getOwnerTypeCode() {
        return ownerTypeCode;
    }

    /**
     * 设置ownerTypeCode属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link OwnerTypeCodeContentType }
     *     
     */
    public void setOwnerTypeCode(OwnerTypeCodeContentType value) {
        this.ownerTypeCode = value;
    }

    /**
     * 获取paxGroup属性的值。
     * 
     * @return
     *     possible object is
     *     {@link PaxGroupType }
     *     
     */
    public PaxGroupType getPaxGroup() {
        return paxGroup;
    }

    /**
     * 设置paxGroup属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link PaxGroupType }
     *     
     */
    public void setPaxGroup(PaxGroupType value) {
        this.paxGroup = value;
    }

    /**
     * 获取paymentTimeLimitDateTime属性的值。
     * 
     * @return
     *     possible object is
     *     {@link Object }
     *     
     */
    public Object getPaymentTimeLimitDateTime() {
        return paymentTimeLimitDateTime;
    }

    /**
     * 设置paymentTimeLimitDateTime属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link Object }
     *     
     */
    public void setPaymentTimeLimitDateTime(Object value) {
        this.paymentTimeLimitDateTime = value;
    }

    /**
     * 获取statusCode属性的值。
     * 
     * @return
     *     possible object is
     *     {@link OrderStatusCodeContentType }
     *     
     */
    public OrderStatusCodeContentType getStatusCode() {
        return statusCode;
    }

    /**
     * 设置statusCode属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link OrderStatusCodeContentType }
     *     
     */
    public void setStatusCode(OrderStatusCodeContentType value) {
        this.statusCode = value;
    }

    /**
     * 获取totalPrice属性的值。
     * 
     * @return
     *     possible object is
     *     {@link PriceType }
     *     
     */
    public PriceType getTotalPrice() {
        return totalPrice;
    }

    /**
     * 设置totalPrice属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link PriceType }
     *     
     */
    public void setTotalPrice(PriceType value) {
        this.totalPrice = value;
    }

    /**
     * 获取webAddressURI属性的值。
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getWebAddressURI() {
        return webAddressURI;
    }

    /**
     * 设置webAddressURI属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setWebAddressURI(String value) {
        this.webAddressURI = value;
    }

    /**
     * 获取flag属性的值。
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getFlag() {
        return flag;
    }

    /**
     * 设置flag属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setFlag(String value) {
        this.flag = value;
    }

}
